home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 16
/
Aminet 16 (1996)(GTI - Schatztruhe)[!][Dec 1996].iso
/
Aminet
/
misc
/
emu
/
zxtools.lha
/
pikasmmanczech.lha
/
pikasmmanual
next >
Wrap
Text File
|
1994-09-08
|
16KB
|
371 lines
P I K A S M
-----------
Tento manuÁl popisuje program Pikasm 1.1+, t.j. Pikasm 1.1 od
firmy T.R.C. vylepÓenÙ Pevosoftem o prÁci s bloky a vyhledÁvÁnÉ.
(Existuje jeÓtÅ PikAsm,Mon, kterÙ spojuje Pikasm 1.1+ a Pikomon
a je doplnÅn Break - Interruptem a konverzÉ dat z GENSu).
Pikasm je assembler-editor vybavenÙ kompresÉ dat, 64 znakovÙm
editorem, podmÉnÅnÙm pÒekladem, blokovÙmi operacemi a dalÓÉmi
vymoÚenostmi. òada jeho funkcÉ je vÓak pomÅrnÅ neznÁmÁ a k
jejich objasnÅnÉ mÁ poslouÚit tento manuÁl.
ManuÁl je ÃlenÅn takto: editor, hlavnÉ menu, pÒekladaÃ.
1. EDITOR
----------
Editor mÁ 64 znakÊ na 22 ÒÁdek. PÒedposlednÉ ÒÁdka zobrazuje
tabulÁtory, poslednÉ pak typ pÉsmen (CAPS LOCK/NORMAL), d×lku
souboru a voln× mÉsto k RAMTOPU (max 30075).
1.1 Instrukce
Instrukce zapisujeme na ÒÁdce s kurzorem, pÒiÃemÚ nemusÉme
dodrÚovat tabulÁtory - program si totiÚ vÚdy ÒÁdku sÁm srovnÁ.
KaÚdÁ ÒÁdka mÊÚe zaÃÉnat nÁvÅÓtÉm (max 8 znakÊ dlouh×). Pokud
nÁvÅÓtÉ vynechÁme, je nutn× vloÚit nejm×nÅ jednu mezeru (jinak
by se totiÚ instrukce brala jako nÁvÅÓtÉ). VÙjimkou jsou
prÁzdnÁ a poznÁmkovÁ ÒÁdka (prefix ;).
DÁle nÁsleduje samotnÁ instrukce (napÒ. LD, NOP, ADD) nebo
pseudoinstrukce assembleru.
Pikasm ovlÁdÁ vÓechny instrukce Z80, vÃetnÅ vÓech ~tajnÙch~. To
jsou: 1) Instrukce pracujÉcÉ s polovinami registrÊ IX a IY,
kter× v zÁpisu oznaÃujeme LX,HX,LY a HY
(napÒ. LD A,LX). Program oÓetÒuje prefixov× chyby
(napÒ. LD LX,LY).
2) ShiftovÙ posun vlevo, kterÙ dÁvÁ do nult×ho bitu 1.
Program akceptuje zÁpis SLL i SLIA.
3) Bitov× instrukce a instrukce posunu s pÒesunem.
Jsou to RL,RR,RLC,RRC,SLA,SRA,SRL,SLL,SLIA,RES,SET.
Je zajÉmav×, Úe program pÒeklÁdÁ i BIT, kterÙ vÓak
pÒesun neprovÁdÉ. V zÁpisu napÒ. RES 6,C,(IX+10).
Pseudoinstrukce nejsou instrukcemi procesoru, slouÚÉ pÒedevÓÉm
k ÒÉzenÉ pÒekladu. Jsou to:
DB definovan× bajty. Za tÉmto pÒÉkazem musÉ bÙt
nejm×nÅ jeden vÙraz <-255,255>. (Pozn. vÉce
pÒÉkazÊ oddÅlujeme ÃÁrkami (,)).
DW definovanÁ slova. Za tÉmto pÒÉkazem musÉ bÙt
nejm×nÅ jeden vÙraz <-65535,65535>.
SpeciÁlnÉmi typy vÙrazÊ jsou:
Znak: Zapisujeme mezi dva apostrofy. MoÚnost prefixÊ
/ (lomÉtko) a ^ (Óipka,mocnina)-viz text.
Text: Zapisujeme mezi dvoje uvozovky, mÊÚe mÉt d×lku
max 47 znakÊ. Lze zapsat malÁ,velkÁ pÉsmena a
znaky extend modu. Pokud chceme vloÚit
znak+128 (napÒ. zarÁÚka), napÉÓeme pÒed znak
prefix ^ (napÒ. ^a). Pokud chceme zapsat znak
^, musÉme pouÚÉt prefixu / (/^). Prefix /
umoÚÎuje i vloÚenÉ dalÓÉch kÏdu:
// = lomÉtko
/" = uvozovky
/n = chr 13, enter
/l = chr 6, left
/0 = chr 0
Sequence: JednÁ se o posloupnost hexa ÃÉsel uvedenÙch
dvojteÃkou (napÒ :AB0F). Pokud chceme do
sequence zaÒadit znak, pouÚijeme prefix ".
Pro znak+128 pouÚijeme prefix ^.
Slovo: Chceme-li mezi Òadu bajtÊ vloÚit slovo,
pouÚijeme prefix >.
Byte: Pro vloÚenÉ bajtu do Òady slov pouÚijeme prefix
<.
DS definovan× mÉsto. UrÃuje poÃet rezervovanÙch bytÊ
v pamÅti. DruhÙ vÙraz pak urÃuje ÃÉm se mÁ mÉsto
vyplnit (NapÒ. DS 230 = 230 volnÙch bytÊ,
DS 15,#ff = patnÁct dvÅstÅpadesÁtpÅtek). Pokud
neuvedete plnÉcÉ znak, rezervovan× byty se
pÒeskoÃÉ a nezmÅnÉ.
ORG ZaÃÁtek pÒekladu. Tato instrukce urÃuje kam se
bude kÏd pÒeklÁdat. PÒÉpadnÙ druhÙ parametr udÁvÁ
adresu skuteÃn×ho pÒekladu (napÒ ORG 16384,50000
zajistÉ uloÚenÉ kÏdu fungujÉcÉho v obrazovce od
adresy 50000).
EQU pÒiÒazenÉ. Tato instrukce pÒiÒazuje nÁvÅÓtÉ
hodnotu urÃenou vÙrazem vpravo (napÒ DESET EQU 10)
OPT NastavenÉ lokÁlnÉch Options. Viz Options.
OPSET NastavenÉ jistÙch lokÁlnÉch Options. Provede se OR
parametru s lokÁlnÉmi Options.
OPRES VypnutÉ jistÙch lokÁlnÉch Options. Provede se CPL
a AND parametru s lokÁlnÉmi Options.
OPXHG PÒepnutÉ jistÙch lokÁlnÉch Options. Provede se XOR
parametru s lokÁlnÉmi Options.
ENTER VstupnÉ bod. Tento pÒÉkaz urÃuje vstupnÉ bod pro
pÒÉkaz RUN (viz dÁle). Parametr urÃuje pÒÉmo
adresu, bez parametru se bere aktuÁlnÉ hodnota
ÃÉtaÃe (= ENTER $).
IF PodmÉnka. UrÃuje zaÃÁtek podmÉnÅn×ho pÒekladu.
Pokud je vÙraz vyhodnocen jako pravdivÙ, pÒeklÁdÁ
se ÃÁst programu aÚ do ENDIF (resp. ELSE). Pokud
je vÙraz nepravdivÙ, ÃÁst k ENDIF se ignoruje
(resp. pÒeloÚÉ se ÃÁst po ELSE).
ELSE Pokud byl vÙraz po IF pravdivÙ, pÒeloÚÉ se ÃÁst
programu aÚ k tomuto pÒÉkazu a nÁsledujÉcÉ ÃÁst se
bude ignorovat aÚ k pÒÉkazu ENDIF. V opaÃn×m
pÒÉpadÅ se prvnÉ ÃÁst ignoruje a druhÁ pÒeloÚÉ.
ENDIF Konec podmÉnky.
BRON Break on. Parametr jako u ENTER. Od tohoto pÒÉkazu
se aÚ k pÒÉkazu BROFF (resp. do konce programu)
budou do vÙsledn×ho kÏdu uklÁdat odskoky do
Pikasmu umoÚÎujÉcÉ pÒeruÓenÉ programu. Ten je vÓak
nutno volat z Pikasmu (Run). Vhodn× pro ladÅnÉ
programÊ (moÚnost pÒeruÓenÉ nekoneÃnÙch cyklÊ).
PÒi finÁlnÉm pÒekladu vÓak nezapomeÎte tento
pÒÉkaz vypnout. Tak× pozor na probl×my s napÒ. JR
NZ,$+3 a podobnÙmi "absolutnÉmi" konstrukcemi.
BROFF Break off. VypÉnÁ vklÁdÁnÉ kontrolnÉch odskokÊ do
kÏdu. ImplicitnÅ je na konci programu.
1.2 OperÁtory a zÁpis hodnot
Pokud to instrukce vyÚaduje, nÁsledujÉ na ÒÁdce operandy, pÒÉp.
parametry. Podstatnou souÃÁstÉ operandÊ a parametrÊ jsou vÙrazy.
VÙraz je v podstatÅ posloupnostÉ nÁvÅÓtÉ (pÒÉp. hodnot) a
operÁtorÊ. OperÁtory jsou:
1) unÁrnÉ. PracujÉ pouze s jednÉm parametrem.
. (teÃka) LogickÁ negace (CPL)
- (mÉnus) OpaÃnÁ hodnota (NEG)
+ (plus) lze vynechat
\ (obr.lomÉtko) VyÓÓÉ byte
/ (lomÉtko) NiÚÓÉ byte
2) binÁrnÉ. StojÉ mezi dvÅma vÙrazy.
+ (plus) SouÃet
- (mÉnus) RozdÉl
* (hvÅzdiÃka) NÁsobenÉ
/ (lomÉtko) DÅlenÉ (DIV)
\ (obr.lomÉtko) Zbytek po dÅlenÉ (MOD)
& (and) BitovÙ AND
| (ÃÁrka) BitovÙ OR
~ (vlnovka) BitovÙ XOR
&& (2x and) A zÁroveÎ, logickÙ AND
|| (2x ÃÁrka) Nebo, logickÙ OR
~~ (2x vlnovka) VÙluÃn× nebo, logickÙ XOR
> VÅtÓÉ neÚ
< MenÓÉ neÚ
>= VÅtÓÉ nebo rovno
<= MenÓÉ nebo rovno
= Rovnost
<> Nerovnost
<< Rotace vlevo (napÒ 10<<2) (SLA)
>> Rotace vpravo o N bitÊ (SRL)
Pozn. pozor na vyhodnocovÁnÉ zleva doprava (2+3*4 =20)
KromÅ nÁvÅÓtÉ se ve vÙrazech vyskytujÉ i konkr×tnÉ hodnoty.
Existuje nÅkolik zpÊsobÊ jejich zÁpisu.
Prefix Hodnota
úÁdnÙ NormÁlnÉ decimÁlnÉ zÁpis
# HexadecimÁlnÉ zÁpis (napÒ. #28FF)
% BinÁrnÉ zÁpis (napÒ. %01011000)
SpeciÁlnÉm pÒÉpadem je zÁpis jednobytov× hodnoty formou znaku
(viz t×Ú DB,DW). PoÚadovanÙ znak vloÚÉme mezi apostrofy (').
NezamÅÎovat s textem, kterÙ je vloÚen mezi uvozovky (") a mÊÚe
obsahovat i vÉce znakÊ. NapÒ. 'a' je normÁlnÉ hodnota rovnÁ 97 a
lze pouÚÉt ve vÓech vÙrazech. Oproti tomu "a" je text, a lze ho
pouÚÉt pouze v pseudo instrukcÉch DB a DW.
Specialitkou je t×Ú ÃÉtaà adres $ (string). Je vÚdy roven
aktuÁlnÉ adrese.
1.3 òÉdÉcÉ klÁvesy
Editor sÁm o sobÅ mÁ vestavÅn Òadu uÚiteÃnÙch funkcÉ, kter× se
ovlÁdajÉ ÒÉdÉcÉmi klÁvesami:
CS+1 Posun kurzoru po tabulÁtorech vlevo.
CS+SPACE Posun kurzoru po tabulÁtorech vpravo.
CS+8 Posun kurzoru vpravo.
CS+5 Posun kurzoru vlevo.
CS+7 Posun kurzoru nahoru.
CS+6 Posun kurzoru dolu.
CS+2 PÒepÉnÁnÉ malÁ/velkÁ pÉsmena.
CS+3 VloÚ mezeru. Zbytek ÒÁdky se posune doprava.
CS+4 VymaÚ znak na pozici kurzoru. òÁdka se posune
doleva.
CS+0 VymaÚ znak vlevo a posun kurzoru doleva.
CS+9 VloÚ jednu ÒÁdku pÒed aktuÁlnÉ ÒÁdku.
ENTER VloÚ jednu ÒÁdku za aktuÁlnÉ ÒÁdku+pÒechod
kurzoru na novou ÒÁdku.
CS+SS PÒechod do menu.
CS+W VymaÚ aktuÁlnÉ ÒÁdku.
CS+Q Zapamatuj si aktuÁlnÉ ÒÁdku.
CS+E Vyvolej poslednÉ zapamatovanou ÒÁdku.
Pozn. Pokud dojde po odeslÁnÉ ÒÁdku ke ztrÁtÅ dat na jeho
konci, Pikasm VÁs upozornÉ barevnÙm atributem.
1.4 ChybovÁ hlÁÓenÉ editoru
PÒi pouÚitÉ ENTER, CS+7, CS+6, CS+9 a CS+SS kontroluje Pikasm
syntax dopsan× ÒÁdky. Pokud nenÉ nÅco v poÒÁdku, napÉÓe nÅkter×
z chybovÙch hlÁÓenÉ:
Illegal character V nÁvÅstÉ pÒÉkazu nebo operandech se
vyskytuje nesprÁvnÙ znak.
Bad operands Instrukce obsahuje operand(y), jenÚ jÉ
nepÒÉsluÓÉ.
Label too long bylo pouÚito nebo deklarovÁno nÁvÅstÉ delÓÉ
neÚ 8 znakÊ.
Is a reserved word Bylo pouÚito nebo deklarovÁno nÁvÅstÉ s
nÁzvem stejnÙm jako oznaÃenÉ registrÊ.
Bad mnemonics NesmyslnÁ instrukce. NapÒ. "spojenÅ" zapsÁno
LDA,1 apod.
Not closed ChybÉ uvozovky ukonÃujÉcÉ text.
Character error PouÚitÉ prefixu / v textu se ÓpatnÙm
parametrem.
Prefix error Instrukce operujÉcÉ s registry IX Ãi IY je
nepÒeloÚitelnÁ, napÒ. ADD IX,IY.
Out of memory NenÉ dostatek voln× pamÅti, nutno zvÙÓit
Workspace.
BÅhem provÁdÅnÉ nÅkterÙch pÒÉkazÊ editoru mohou dÁle vzniknout
tyto chyby:
Tape loading error Chyba pÒi Load Ãi Verify.
Interrupted Break pÒi operacÉch s Mgf nebo
pÒeruÓenÉ programu s povolenÙm BRON.
Printer sequence invalid ZadÁvanÁ sekvence znakÊ nemÁ sprÁvnou
syntax.
Ramtop too low ópatnÅ nastavenÙ Workspace.
Invalid request Pokus o RUN pÒi neznÁm×m ENTER Ãi
chyba pÒi operacÉch s bloky.
2.HLAVNé MENU
-------------
StisknutÉ CS+SS nÁs pÒepÉnÁ mezi editorem a hlavnÉm menu. Menu
nabÉzÉ funkce, kter× se vyvolajÉ stisknutÉm prvnÉho pÉsmena.
Jsou to:
Asm SpuÓtÅnÉ pÒekladu. Viz PÒekladaÃ.
Bas NÁvrat do BASICU.
Ctb ZmÅna tabulÁtorÊ. Pozn. program ignoruje zmÅnu
tabulÁtorÊ pokud jde o umÉstÅnÉ nÁvÅÓtÉ,
instrukce a operandÊ v ÒÁdku.
Mov ZkopÉrovÁnÉ bloku.
Del VymazÁnÉ bloku.
Fnd VyhledÁnÉ (pÒedevÓÉm nÁvÅÓtÉ).
Nxt VyhledÁnÉ dalÓÉho vÙskytu.
Jld Load podle jm×na.
G"" Load prvnÉho nalezen×ho.
Vrf Verify podle jm×na.
W"" Verify prvnÉho nalezen×ho.
U PÒepÉnÁnÉ Autoverify ON/OFF.
Sav Save se jm×nem, prvnÉ verze.
Put Save dalÓÉ verze.
Xlr Vymazat vÓechen text.
Run Spustit program od adresy udan× v ENTER (Nelze
pokud byly chyby pÒi pÒekladu nebo nebyl vloÚen
ÚÁdnÙ vstupnÉ bod).
Top NastavenÉ RAMTOPU (hranice text/pracovnÉ prostor)
Low NejniÚÓÉ moÚn× nastavenÉ RAMTOPU (text+nÁvÅÓtÉ).
Qpt Sequence znakÊ posÉlan× na tiskÁrnu na zaÃÁtcÉch
a koncÉch strÁnek a ÒÁdek. VÙstup na tiskÁrnu je
pÒes kanÁl #3.
Opt Options pro pÒekladaÃ. JednÁ se o 16-ti bitov×
ÃÉslo, jehoÚ jedniÃkov× bity majÉ tyto vÙznamy:
Hodnota Bit VÙznam
1 0 Na konci vÙpisu se provede
abecednÅ ÒazenÙ vÙpis vÓech
navÅÓtÉ
2 1 VÙslednÙ kÏd se fyzicky
neuklÁdÁ
4 2 NeprovÁdÉ se listing
8 3 VÙstup na tiskÁrnu
16 4 PÒeklad se provÁdÉ za
Workspace
32 5 Nekontroluje se umÉstÅnÉ
vÙsledn×ho kÏdu
64 6 VÙstup na tiskÁrnu (jako 3)
128 7 NevypisujÉ se ÃÉsla ÒÁdek
256 8 PÒi chybÅ skok do editoru
512 9 NÁsledujÉcÉ text ignoruj
1024 10 NevyuÚito
2048 11 VÙpis adres v hexa
4096 12 ZobrazenÉ skuteÃn× adresy
uloÚenÉ
8192 13 VÙpis vytvÁÒen×ho kÏdu
16384 14 PÒi chybÅ a 8 bitu se neÃekÁ
na stisk klÁvesy
32768 15 Pro vnitÒnÉ potÒebu Pikasmu
(Bron/Broff)
3.PòEKLADAã
-----------
PÒekladaà Pikasmu mÁ dva prÊbÅhy. BÅhem prvnÉho assembler
vytvÁÒÉ tabulku nÁvÅstÉ a jejich hodnot. PÒi tomto prÊbÅhu mÊÚe
dojÉt k tÅmto chybovÙm hlÁÓenÉm:
Duplicate declaration:XXXXXXXX
V programu se vyskytuje nÁvÅstÉ XXXXXXXX, kter× bylo
definovÁno vÉcekrÁt.
Expression not defined
V pseudoinstrukci byl pouÚit nedefinovanÙ vÙraz.
No table space
NenÉ dost voln× pamÅti pro vytvoÒenÉ tabulky nÁvÅstÉ.
(je nutno zvÙÓit hodnotu Workspace)
IF overflow
V programu se vyskytuje vÉce neÚ 15 pÒÉkazÊ IF,kter×
jsou do sebe vnoÒeny.
IF underflow
VÉce pÒÉkazÊ ENDIF neÚ If.
More IFs than ENDIFs
Ne vÓechny bloky IF jsou zakonÃeny ENDIF.
Po ukonÃenÉ bÅhu prvnÉho prÊbÅhu Pikasm oznÁmÉ:
-1st pass finished..
a zaÃÉnÁ prÊbÅh druhÙ. V druh×m prÊbÅhu pÒekladaÃe se vytvÁÒÉ
vlastnÉ program. PÒi tomto prÊbÅhu se mÊÚe vyskytnout hlÁÓenÉ:
Bad ORG Pokus o fyzick× zapsÁnÉ bytu do oblasti zaÃÁtek
Pikasmu aÚ Workspace. Kontrolu i fyzickÙ zÁpis lze
vypnout bity 1 a 5 (viz Options).
Out of range
VÙraz nabÙvÁ hodnoty mimo povolenÙ interval: <-255,255>
byte, <-65535,65535> slovo a <-128,127> relativnÉ
adresace skokÊ a indexregistrÊ.
Po ukonÃenÉ druh×ho prÊbÅhu Pikasm vypÉÓe:
Non defined symbols:
a nÁsleduje vÙpis vÓech nÁvÅÓtÉ,kterÁ nebyla definovÁna. VÓechny
operace s tÅmito nÁvÅÓtÉmi se pÒeloÚÉ jako kdyby nÁvÅÓtÉ mÅlo
hodnotu 0.
Pokud jste nastavili bit 0 v Options, pÒekladaà jeÓtÅ vytiskne:
Defined symbols:
a abecednÉ seznam vÓech definovanÙch nÁvÅÓtÉ.
Nakonec se jeÓtÅ dozvÉme,Úe
2nd pass finished.
Workspace used:
x/y
---
kde x je poÃet bytÊ pouÚitÙch pro pracovnÉ tabulku nÁvÅÓtÉ a y
je poÃet vÓech volnÙch bytÊ od konce textu aÚ do Workspace.
OdtrÚenÉ na konci pÒekladu ocenÉ majitel× tiskÁren.
PÒeklad je moÚno kdykoliv pozastavit stiskem SPACE a pot×
pÒeruÓit klÁvesou Q (hlÁÓenÉ 'Interrupted' a skok do editoru).
Cokoliv jin×ho pokraÃuje v pÒekladu.
(C) RAXOFT Praha 02.32 RÁno 15.10.1990
a taky SOFTWARE 2000 OF CERES-SOFT 03.02.1991